package com.sitech.openapi.domain.customer;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;

@ApiModel(value = "PaymentPlan", description = "支付方案")
public class PaymentPlan implements Serializable {

    private static final long serialVersionUID = 1L;

    // 支付方案标识
    @ApiModelProperty(value = "支付方案标识")
    private Long paymentPlanId;

    // 记录外部支付方案标识
    @ApiModelProperty(value = "外部支付方案标识")
    private String extPaymentPlanId;

    // 支付帐户的所属类型。参见集团主数据编码规范ACC-C-0006
    @ApiModelProperty(value = "支付方案类型")
    private Long payAcctType;

    // 支付帐户标识
    @ApiModelProperty(value = "支付帐号标识")
    private Long payAcctId;

    // 引用资源Account,为每个帐户生成的唯一编号，只具有逻辑上的含义，没有物理意义。每个帐户标识生成之后，帐户标识在整个服务提供有效期内保持不变。
    @ApiModelProperty(value = "帐户标识")
    private Long acctId;

    // 引用资源Account,
    @ApiModelProperty(value = "外部账户标识")
    private String extAcctId;

    // 为每种付款方式定义的唯一代码. 参见集团主数据编码规范OTC-0001
    @ApiModelProperty(value = "付款方式")
    private Long paymentMethod;

    // 当前帐户所定制的各付款方式的优先级
    @ApiModelProperty(value = "优先级")
    private Integer priority;

    // 表达此条定制关系的支付额度类型如全额支付。参见集团主数据编码规范ACC-C-0210
    @ApiModelProperty(value = "支付额度类型")
    private Long paymentLimitType;

    // 指出本条定制关系的具体额度。其中作为绝对值时，以分为单位。作为百分比时，以万分之一为单位（即表示到小数点后两位）。全额支付是为空
    @ApiModelProperty(value = "支付额度")
    private Long paymentLimit;

    // 记录额度上限，-1代表不限制。
    @ApiModelProperty(value = "额度上限")
    private Long upperAmount;

    // 是否在线支付
    @ApiModelProperty(value = "是否在线支付")
    private Long ifOnlinePay;

    // 接触任务状态,LOVB=CAM-C-0004
    @ApiModelProperty(value = "状态")
    private String statusCd;

    // 状态时间,DateTime类型
    @ApiModelProperty(value = "状态时间")
    private String statusDate;

    // 备注
    @ApiModelProperty(value = "备注")
    private String remark;

    public Long getPaymentPlanId() {
        return paymentPlanId;
    }

    public void setPaymentPlanId(Long paymentPlanId) {
        this.paymentPlanId = paymentPlanId;
    }

    public String getExtPaymentPlanId() {
        return extPaymentPlanId;
    }

    public void setExtPaymentPlanId(String extPaymentPlanId) {
        this.extPaymentPlanId = extPaymentPlanId;
    }

    public Long getPayAcctType() {
        return payAcctType;
    }

    public void setPayAcctType(Long payAcctType) {
        this.payAcctType = payAcctType;
    }

    public Long getPayAcctId() {
        return payAcctId;
    }

    public void setPayAcctId(Long payAcctId) {
        this.payAcctId = payAcctId;
    }

    public Long getAcctId() {
        return acctId;
    }

    public void setAcctId(Long acctId) {
        this.acctId = acctId;
    }

    public String getExtAcctId() {
        return extAcctId;
    }

    public void setExtAcctId(String extAcctId) {
        this.extAcctId = extAcctId;
    }

    public Long getPaymentMethod() {
        return paymentMethod;
    }

    public void setPaymentMethod(Long paymentMethod) {
        this.paymentMethod = paymentMethod;
    }

    public Integer getPriority() {
        return priority;
    }

    public void setPriority(Integer priority) {
        this.priority = priority;
    }

    public Long getPaymentLimitType() {
        return paymentLimitType;
    }

    public void setPaymentLimitType(Long paymentLimitType) {
        this.paymentLimitType = paymentLimitType;
    }

    public Long getPaymentLimit() {
        return paymentLimit;
    }

    public void setPaymentLimit(Long paymentLimit) {
        this.paymentLimit = paymentLimit;
    }

    public Long getUpperAmount() {
        return upperAmount;
    }

    public void setUpperAmount(Long upperAmount) {
        this.upperAmount = upperAmount;
    }

    public Long getIfOnlinePay() {
        return ifOnlinePay;
    }

    public void setIfOnlinePay(Long ifOnlinePay) {
        this.ifOnlinePay = ifOnlinePay;
    }

    public String getStatusCd() {
        return statusCd;
    }

    public void setStatusCd(String statusCd) {
        this.statusCd = statusCd;
    }

    public String getStatusDate() {
        return statusDate;
    }

    public void setStatusDate(String statusDate) {
        this.statusDate = statusDate;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    @Override
    public String toString() {
        return "PaymentPlan{" +
                "paymentPlanId=" + paymentPlanId +
                ", extPaymentPlanId='" + extPaymentPlanId + '\'' +
                ", payAcctType=" + payAcctType +
                ", payAcctId=" + payAcctId +
                ", acctId=" + acctId +
                ", extAcctId='" + extAcctId + '\'' +
                ", paymentMethod=" + paymentMethod +
                ", priority=" + priority +
                ", paymentLimitType=" + paymentLimitType +
                ", paymentLimit=" + paymentLimit +
                ", upperAmount=" + upperAmount +
                ", ifOnlinePay=" + ifOnlinePay +
                ", statusCd='" + statusCd + '\'' +
                ", statusDate='" + statusDate + '\'' +
                ", remark='" + remark + '\'' +
                '}';
    }
}
